home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / basic / mildred / mildred.lha / lha / SplitTests.lha / SpeedTest4.ascii < prev    next >
Text File  |  2000-02-23  |  3KB  |  145 lines

  1. WBStartup
  2.  
  3. #Objects=250
  4. MReserveShapes #Objects+1
  5.  
  6. .init
  7. InitBank 0,1280*512,$10000
  8. CludgeBitMap 0,1280,512,8,Bank(0)
  9. InitPalette 0,256
  10. LoadBitMap 0,"Pic.128",0
  11. MBitmap 0,1280,960
  12. MBitmapWindow 0,1,0,960-512,1280,512
  13. MPlanar16ToBitmap 1,Bank(0),1280,512,1280,512
  14. MBitmap 2,1280,960
  15. MBlockScroll 0,0,1280,960,0,0,0 ; Make backup
  16. InitBank 0,320*240,$10002
  17. CludgeBitMap 0,320,240,8,Bank(0)
  18. InitBank 1,320*240,$10002
  19. CludgeBitMap 1,320,240,8,Bank(1)
  20. Screen 0,0,0,320,240,8,0,"Game",0,0,0
  21. ShowPalette 0
  22.  
  23. .offsets
  24. MBitmap 1,320,240
  25. NEWTYPE.OffsetList
  26.   LineWidth.w
  27.   X1Offset.w
  28.   X2Offset.w
  29.   SourceModuloOffset.w
  30. End NEWTYPE
  31. Dim leftrows1.OffsetList(40)
  32. Dim leftrows2.OffsetList(40)
  33. Dim rightrows1.OffsetList(40)
  34. Dim rightrows2.OffsetList(40)
  35. leftrows1(0)\LineWidth=64-24,0,0,0
  36. leftrows2(0)\LineWidth=64,0,0,0
  37. rightrows1(0)\LineWidth=1,0,0,0
  38. rightrows2(0)\LineWidth=24,0,0,0
  39. For y=1 To 39
  40.   leftrows1(y)\LineWidth=64-24-y
  41.   leftrows1(y)\X1Offset=0
  42.   leftrows1(y)\X2Offset=0
  43.   leftrows1(y)\SourceModuloOffset=0
  44.   leftrows2(y)\LineWidth=64-y
  45.   leftrows2(y)\X1Offset=0
  46.   leftrows2(y)\X2Offset=0
  47.   leftrows2(y)\SourceModuloOffset=0
  48.   rightrows1(y)\LineWidth=y+1
  49.   rightrows1(y)\X1Offset=-1
  50.   rightrows1(y)\X2Offset=-1
  51.   rightrows1(y)\SourceModuloOffset=0
  52.   rightrows2(y)\LineWidth=24+y
  53.   rightrows2(y)\X1Offset=-1
  54.   rightrows2(y)\X2Offset=-1
  55.   rightrows2(y)\SourceModuloOffset=0
  56. Next
  57.  
  58. .setup
  59. mousemult.q=1070/320
  60. its.l=0
  61. buf.b=0
  62.  
  63. ;Set up movement table
  64. .table
  65. MQueue 0,#Objects
  66. NEWTYPE.xy
  67.   x.w
  68.   y.w
  69. End NEWTYPE
  70. MParticleMode 0
  71. Dim xy.xy(#Objects)
  72. Dim direction.xy(#Objects)
  73. MAutoCookie On
  74. MUseBitmap 0
  75. For obj=1 To #Objects
  76.   MGetaShape obj,Rnd(1280-64),760+Rnd(200-64),32,32
  77.   xy(obj)\x=Rnd(1280-96)+16
  78.   xy(obj)\y=Rnd(960-96)+16
  79.   Repeat
  80.     direction(obj)\x=Rnd(12)-6
  81.   Until direction(obj)\x<>0
  82.   Repeat
  83.     direction(obj)\y=Rnd(12)-6
  84.   Until direction(obj)\y<>0
  85. Next obj
  86. MHandle 0,32,32
  87.  
  88. Mc2pWindow 0,160,120,1280,320,240
  89.  
  90. mag.q=12
  91. ShowBitMap 1-buf
  92. VWait
  93. ResetTimer
  94. .loop
  95. Repeat
  96.   player1x=SMouseX*mousemult
  97.   player1y=SMouseY*mousemult
  98.   player2x=(1280-238)-player1x
  99.   player2y=(960-160)-player1y
  100. ;player2x=player1x
  101. ;player2y=player1y
  102.   MUseBitmap 0
  103.  
  104.   MAddToParticles &xy(1)\x,#Objects,&direction(1)\x
  105.   MReboundParticles &xy(1)\x,#Objects,&direction(1)\x,48
  106.   For obj=1 To #Objects
  107.     If xy(obj)\x>player1x-32 AND xy(obj)\x<player1x+320+32 AND xy(obj)\y>player1y-32 AND xy(obj)\y<player1y+240+32
  108.       MQBlit obj,xy(obj)\x,xy(obj)\y
  109.     EndIf
  110.   Next obj
  111.  
  112.   MUseBitmap 1
  113. Mc2p 0,MBitmapPtr(player1x,player1y,0),Bank(buf)
  114. Mc2p 0,MBitmapPtr(player2x,player2y,0),MGenericPtr(160 LSR 3,0,Bank(buf),40)
  115. Mc2p 0,MBitmapPtr(1280-player1x,player1y,0),MGenericPtr(0,120,Bank(buf),40)
  116. Mc2p 0,MBitmapPtr(1280-player2x,960-player2y,0),MGenericPtr(160 LSR 3,120,Bank(buf),40)
  117.  
  118.   its+1
  119.   ShowBitMap buf
  120. ;  VWait
  121.   buf=1-buf
  122.   If Joyb(0)=1 Then mag-0.1
  123.   If Joyb(0)=2 Then mag+0.1
  124.   MUnQueue 0,2
  125. Until Joyb(0)=3
  126.  
  127. ;Report
  128. .report
  129. t=Timer
  130. t=Max(t,1)
  131. its=Max(its,1)
  132. a.q=50.0/(t/its)
  133. WBenchToFront_
  134. WbToScreen 1
  135. Window 2,16,16,300,40,0,"Test results",1,0
  136. WindowOutput 2
  137. NPrint a," frames per second"
  138. NPrint " "
  139. NPrint "Press mouse/joy button..."
  140. VWait 20
  141. Repeat
  142. Until Joyb(0)<>0 OR Joyb(1)<>0
  143. End
  144.  
  145.